import os
import sys
import codecs

FILE_NAME = 'file.txt'

# 一次写一行
file_w = open(FILE_NAME, 'w')
file_w.write("Hey girl, what's your name?\n")
file_w.close()

# 追加写一行
file_a = open(FILE_NAME, 'a')
file_a.write("I'm precious!")
file_a.close()

# 一次写多行
# file_w.writelines("Hey girl, what's your name? \nI'm precious!")

# 一次读完
# file_r = open(FILE_NAME, 'r')
# print(file_r.read())
# file_r.close()

# 一次读一行
file_r = open(FILE_NAME, 'r')
# 返回文件当前位置
print(file_r.tell())        # 0
# 返回一个整型的文件描述符
print(file_r.fileno())      # 3
# read the 1 line
print(file_r.readline())
print(file_r.tell())        # 28
# read the 2 line
print(file_r.readline())
print(file_r.tell())        # 41
# reset pointer from 41 to 0
# file_r.seek(0)
# 第一个参数表示偏移量，第二个参数0：从文件开始位置，1：从当前位置，2：从文件结尾处
file_r.seek(0, 0)
print('\nAfter reset pointer to 0: ' + file_r.readline())
file_r.close()

# 一次读完readlines，将每一行放到list
print("read file lines saved to list")
file_ro = open(FILE_NAME, 'r')
for line in file_ro.readlines():
    print(line)
file_ro.close()


# 以迭代器方式读取
def read_file():
    print("read file lines as iterator")
    file = open(FILE_NAME, 'r')
    iter_f = iter(file)
    for line in iter_f:
        print(line)
    file.close()


read_file()

print(sys.getdefaultencoding())     # utf-8
print(file_a.encoding)              # UTF-8

# 保存汉字，可以直接写入，不用转
file_a = open(FILE_NAME, 'a')
uni_str = '\n世界人民大团结万岁'
file_a.write(uni_str)
file_a.flush()
file_a.close()


# 把UNICODE编码转为UTF-8
# utf_str = uni_str.encode('utf-8')
# file_a.write(utf_str)

# 用codecs直接以UTF-8打开文件
file = codecs.open(FILE_NAME, 'a', 'utf-8')
uni_str = '\n中华人民共和国万岁'
file.write(uni_str)
file.flush()
file.close()

# 读取全部内容
read_file()

# 删除文件
os.remove(FILE_NAME)
